1. Field of the Invention
This invention is related to multi-processing computer systems, and more particularly to a means and method of routing keyboard and other input events in such a system.
2. Description of Related Art
Computer systems in which several different programs or processes run concurrently are becoming more common. These processes may take the form of multiple application programs and may also include additional segments of executable code which form part of the operating system but which run independently, similar to applications programs.
Controlling and directing input data in a computer system in which multiple-processes run concurrently poses many problems compared to a system in which only a single process runs at any one time. One particular problem faced by such multi-processing systems is controlling the input from a user and directing it to the appropriate program or system function. Typically, user input is provided by a keyboard, mouse-type device, touch screen, or other similar input device. For example, when a user types one or more keys at a keyboard, this input data may be intended for any of several different programs or processes. A user running a word processing program, for example, might type letter keys to indicate input to the word processing program, other function keys to indicate to the system that certain parameters, such as window size, are to be changed, and still other keys to select another application program as the currently active program. Thus, a method of processing the input from a user and ensuring that that input is directed to the appropriate computer process is necessary in computers running concurrent programs and processes.
Additionally, in a multi-processing system, each process or program runs only during a small portion of the time. Multiple programs are implemented by dividing the central processor time up into incremental portions and allowing individual programs and processes different amounts of this time. As a result, an application which has been inactive for a period of time may have several different input events of various levels of urgency waiting for it when it again becomes active. It is desirable to allow a program or process to selectively process these input event in an order which may not be the same as the order in which they occurred or the order in which they are "queued" by the computer system.